package com.wjh.www.service;

import com.wjh.www.annotation.springmvc.RequestBody;
import com.wjh.www.entity.bo.UserLoginBo;
import com.wjh.www.entity.dto.CommonResult;
import com.wjh.www.entity.po.User;
import com.wjh.www.entity.vo.UserInfoVo;

/**
 * @author wjh
 * @date 2021/9/9 17:22
 * @Package com.wjh.anyview.service
 */
public interface UserService {
    /**
     * 用户登录
     *
     * @param userLoginBo 封装登录信息得1对象
     * @return 登录成功返回token
     */
    CommonResult<String> login(UserLoginBo userLoginBo);

    /**
     * 用户注册
     *
     * @param user 新用户
     * @return 没有数据返回
     */
    CommonResult<?> register(@RequestBody User user);

    /**
     * 添加一个用户
     *
     * @param user 新用户
     * @return 没有返回数据
     */
    CommonResult<?> saveUser(User user);

    /**
     * 给某用户设置角色
     *
     * @param userId 用户id
     * @param role   角色
     */
    void setRole(Long userId, String role);

    /**
     * 添加一位学生
     *
     * @param user 学生对象
     * @return 没有返回数据
     */
    CommonResult<?> saveStudent(User user);

    /**
     * 添加一位管理员
     *
     * @param user 管理员对象
     * @return 没有返回数据
     */
    CommonResult<?> saveAdmin(User user);

    /**
     * 通过学工号查询一个user对象
     *
     * @param num 学工号
     * @return 返回user对象
     */
    CommonResult<UserInfoVo> selectUserByNum(String num);

    /**
     * 通过user
     *
     * @param user 用户新信息（id字段不可以为null）
     * @return 没有数据返回
     */
    CommonResult<?> updateUserById(User user);

    /**
     * 通过用户id删除一个用户
     *
     * @param userId 用户id
     * @return 没有返回数据
     */
    CommonResult<?> deleteUserById(Long userId);

    /**
     * 通过token返回user对象
     *
     * @param tokenString token
     * @return 返回user
     */
    CommonResult<User> getUserByToken(String tokenString);
}
